package controle;

import java.sql.SQLException;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
import modelo.InstituicaoBO;
import modelo.SetorBO;
import persistencia.InstituicaoDAO;
import persistencia.SetorDAO;

@Named(value = "setorMB")
@RequestScoped
public class SetorMB {

    private SetorBO setorBO;
    private SetorDAO setorDAO;
    private List<SetorBO> setores;
    private String palavraChave;
    private InstituicaoDAO instituicaoDAO;
    private List<InstituicaoBO> instituicoes;

    public SetorMB() throws SQLException {

        setorBO = new SetorBO();
        setorBO.setStatus(1);
        setorDAO = new SetorDAO();
        setores = this.listarSetores();
        instituicaoDAO = new InstituicaoDAO();
        this.instituicoes = instituicaoDAO.listarInstituicao("SELECT * FROM instituicao");

    }

    public SetorBO getSetorBO() {
        return setorBO;
    }

    public void setSetorBO(SetorBO setorBO) {
        this.setorBO = setorBO;
    }

    public List<SetorBO> getSetores() throws SQLException {
        return setores;
    }

    public String getPalavraChave() {
        return palavraChave;
    }

    public void setPalavraChave(String palavraChave) {
        this.palavraChave = palavraChave;
    }

    public void novo() throws SQLException {

        setorBO = new SetorBO();
        setores = this.listarSetores();

    }

    public String salvar() throws SQLException {
        int retorno = 0;
        if (setorBO.getIdSetor() > 0) {
            this.setorDAO.alterar(setorBO);

        } else {
            retorno = this.setorDAO.inserir(setorBO);
        }

        if (retorno == 1) {


        }
        return "CadastrarSetor";

    }

    public void excluir(SetorBO setorBO) throws SQLException {

        this.setorDAO.excluir(setorBO);
        setores = this.listarSetores();

    }

    public String editar(SetorBO setorBO) throws SQLException {
        this.setorBO = setorBO;
        return "CadastrarSetor";
    }

    public List<SetorBO> listarSetores() throws SQLException {

        return this.setorDAO.listarSetores("SELECT * FROM setor");

    }

    public SetorBO carregarSetoresPorNome() throws SQLException {

        return this.setorDAO.carregarSetorPorNome(this.setorBO.getNomeSetor());
    }

    public SetorBO carregarSetoresPorId() throws SQLException {

        return this.setorDAO.carregarSetorPorId(this.setorBO.getIdSetor());

    }

    public SetorBO filtrarSetorPorPalavraChave() throws SQLException {

        return this.setorDAO.filtrarSetorPorPalavraChave(this.getPalavraChave());
    }

    public void ordenarPorID() throws SQLException {

        this.setores = this.setorDAO.listarSetores("SELECT * FROM setor ORDER BY id_setor");

    }

    public void ordenarPorStatus() throws SQLException {

        this.setores = this.setorDAO.listarSetores("SELECT * FROM setor ORDER BY status");
    }

    public List<InstituicaoBO> getInstituicoes() {
        return instituicoes;
    }

    public void setInstituicoes(List<InstituicaoBO> instituicoes) {
        this.instituicoes = instituicoes;
    }

}
